import { take,put,fork,delay,cancel} from 'redux-saga/effects';
import * as actionTypes from './action-types';

function * httpRequest(action){
  //从动作对象中获取请求的URL地址
  const url = action.payload;
  //开始用fetch发起HTTP请求，并且获取响应体为JSON格式
  const result = yield fetch(url).then(res=>res.json())
  console.log('result',result)
}
function * requestWatcher(){
  //监听用户派发的REQUEST请求，一旦监听到了则会把动作赋值action,然后继续向下执行
   const action = yield take(actionTypes.REQUEST);
   console.log('action',action);
   //开启一个新的后台任务发起HTTP请求，并传递action参数
   const requestTask = yield fork(httpRequest,action);
   //等待用户派发停止 请求的命令
   yield take(actionTypes.STOP_REQUEST);
   //如果等到了会消这个任务
   yield cancel(requestTask);
}

function* rootSaga() {
 //监听用户发出的请求命令
 yield requestWatcher();
}
export default rootSaga;